/**
 * 
 */
package com.manolo.component.desing.base;

import java.awt.Rectangle;
import java.awt.Shape;

/**
 * @author gustavo
 * 
 */
public abstract class BaseVectorShape {

	//variáveis
	private Shape shape;
	private boolean alive;
	private double x,y;
	protected double velX;
	protected double velY;
	private double moveAngle, faceAngel;
	
	//métodos de acessos 
	public Shape getShape() {
		return shape;
	}
	public boolean isAlive() {
		return alive;
	}
	public double getX() {
		return x;
	}
	public double getY() {
		return y;
	}
	public double getVelX() {
		return velX;
	}
	public double getVelY() {
		return velY;
	}
	public double getMoveAngle() {
		return moveAngle;
	}
	public double getFaceAngel() {
		return faceAngel;
	}
	
	
	//metodos de definição de valores
	public void setShape(Shape shape) {
		this.shape = shape;
	}
	public void setAlive(boolean alive) {
		this.alive = alive;
	}
	public void setX(double x) {
		this.x = x;
	}
	public void incX(double i) {
		this.x += i;
	}
	
	public void setY(double y) {
		this.y = y;
	}
	
	
	
	public void incY(double i) {
		this.y += i;
	}
	
	public void setVelX(double velX) {
		this.velX = velX;
	}
	public void incVelX(double i) {
		this.velX += i;
	}
	
	public void dimVelX(double i) {
		this.velX -= i;
	}
	
	public void setVelY(double velY) {
		this.velY = velY;
	}
	
	
	public void incVelY(double i) {
		this.velY += i;
	}
	public void dimVelY(double i) {
		this.velY -= i;
	}
	
	public void setMoveAngle(double moveAngle) {
		this.moveAngle = moveAngle;
	}
	public void incMoveAngle(double i) {
		this.moveAngle += i;
	}
	
	public void setFaceAngel(double faceAngel) {
		this.faceAngel = faceAngel;
	}
	
	public void incFaceAngel(double i) {
		this.faceAngel += i;
	}
	
	
	/**
	 *Limites retangulares 
	 */
	public abstract Rectangle getBounds();

	
	public BaseVectorShape() {
		setShape(null);
		setAlive(false);
		setX(0.0);
		setY(0.0);
		setVelX(0.0);
		setVelY(0.0);
		setMoveAngle(0.0);
		setFaceAngel(0.0);
		
	}
	
	
	
}
